什么是UML
UML是Unified Modeling Language(统一建模语言)的简称。UML是对软件密集型系统中的制品进行可视化、详述、构造和文档化的语言。制品{Artifact}是指软件开发过程中产生的各种各样的产物,如模型、源代码、测试用例等。
UML建模可以达到以下目的
- 使用模型可以更好地理解问题
- 使用模型可以加强人员之间的沟通
- 使用模型可以更早地发现错误或疏漏的地方
- 使用模型可以获得设计结果
- 模型为最后的代码提供依据
UML的历史
第一阶段:OO方法学家的联合行动
- 1995.10:G.Booch 与J.Rumbaugh联合(推出Unified Method 0.8)
- 1996.6:I.Jacobson加入(推出UML0.9[Unified Modeling Language])–各家主要的面向对象方法家将其各自的方法统一为UML,但不称统一建模方法,而称统一建模语言,最根本的原因在于UML只是统一的概念与表示法,没有统一过程。
第二阶段:公司的联合行动
- 1996:成立了UML伙伴组织,12家公司加入。
- 1997.1:推出UML1.0,另外5家公司加盟。
- 1997.9:形成UML1.1,提交OMG作为建模语言规范提案。
- 1997.11:UML1.1被OMG正式采纳。
第三阶段:OMG主持下的修订
- 1997~2002:OMG成立UML修订任务组主持UML的修订,先后产生UML1.2、UML1.3、UML1.4、UML1.5等版本。
第四阶段:UML的重大修订——UML2
- 1999:开始酝酿,旨在产生比UML1有显著改进的新版本。
- 2000~2001:由OMG陆续发不了4个提案需求(RFP)[征集提案,择优采纳]。
- 2002年之后先后形成4个UML2.0规范,在OMG的组织下进行修订,产生了UML2.1~2.4一系列版本。
第五阶段:提交到ISO申请成为国际标准
- 2005年以后UML2的4个规范陆续进入ISO的标准化日程,目前UML基础结构、UML上层结构、OCL已被ISO正式采纳,成为建模语言国际标准。
UML的主要特点
- 统一的标准。
- 面向对象。UML是支持面向对象软件开发的建模语言。
- 可视化、表现能力强。
- 独立于过程,UML不依赖于特定的软件开发过程。
- 概念明确,建模表示法简洁,图形结构清晰,容易掌握和使用。
UML的应用领域
UML具有很广泛的应用领域,其中最常用的是为软件系统建模,主要领域有:企业信息系统、银行金融系统、电信、交通、国防、航空、零售领域、科学计算、分布式的基于Web的服务。UML还可以用来描述其他非软件系统,比如一个机构的组成和机构的工作流程等等。
UML中的视图
UML中的视图包括用例视图(Use Case View)、逻辑视图(Logical View)、实现视图(Implementation View)、进程视图(Process View)、部署视图(Deployment View)等,
这5个视图被称作”4+1”视图.如下图所示:
- 逻辑视图:逻辑视图关注功能,不仅包括用户可见的功能,还包括为实现用户功能而必须提供的”辅助功能模块”;它们可能是逻辑层、功能模块等。
- 开发视图:开发视图关注程序包,不仅包括要编写的源程序,还包括可以直接使用的第三方SDK和现成框架、类库,以及开发的系统将运行于其上的系统软件或中间件。
- 处理视图:处理视图关注进程、线程、对象等运行时概念,以及相关的并发、同步、通信等问题。
- 物理视图:物理视图关注”目标程序及其依赖的运行库和系统软件”最终如何安装或部署到物理机器,以及如何部署机器和网络来配合软件系统的可靠性、可伸缩性等要求。
- 物理视图和处理视图的关系:处理视图特别关注目标程序的动态执行情况,而物理视图重视目标程序的静态位置问题;物理视图是综合考虑软件系统和整个IT系统相互影响的架构视图。
- 物理视图和处理视图的关系:处理视图特别关注目标程序的动态执行情况,而物理视图重视目标程序的静态位置问题;物理视图是综合考虑软件系统和整个IT系统相互影响的架构视图。
- 处理视图和开发视图的关系:开发视图一般偏重程序包在编译时期的静态依赖关系,而这些程序运行起来之后会表现为对象、线程、进程,处理视图比较关注的正是这些运行时单元的交互问题。
UML定义了5类,10种模型图
- 用例图(Use Case Diagram): 展示系统外部的各类执行者与系统提供的各种用例之间的关系
- 静态图
- 类图(Class diagram):展示系统中类的静态结构(类是指具有相同属性和行为的对象,类图用来描述系统中各种类之间的静态结构)
- 对象图(Object diagram):是类图的一种实例化图(对象图是对类图的一种实例化)
- 包图(Package diagram):是一种分组机制。在UML1.1版本中,包图不再看作一种独立的模型图)
- 行为图
- 状态图(State diagram):描述一类对象具有的所有可能的状态及其转移关系(它展示对象所具有的所有可能的状态以及特定事件发生时状态的转移情况)
- 活动图(Activity Diagrams):展示系统中各种活动的执行流程(各种活动的执行顺序、执行流程)
- 交互图
- 顺序图(Sequence Diagram):展示对象之间的一种动态协作关系(一组对象组成,随时间推移对象之间交换消息的过程,突出时间关系)
- 合作图Collaboration diagram:从另一个角度展示对象之间的动态协作关系(对象间动态协作关系,突出消息收发关系)
- 实现图
- 构件图(Component Diagram):展示程序代码的物理结构(描述程序代码的组织结构,各种构件之间的依赖关系)
- 配置图(Configuration diagram):展示软件在硬件环境中(特别是在分布式及网络环境中)的配置关系(系统中硬件和软件的物理配置情况和系统体系结构)
UML建模工具
市面上UML建模工具很多,比较流行的有Rational Rose ,Microsoft Visio、Enterprise Architect 、Visual UML等。《UML建模-面向对象设计》系列文章使用的UML建模工具是Enterprise Architect 7.0,此工具还是比较好用的。